//合并多个文件
#include<head.h>
int main(int argc, char const *argv[])
{
    //定义一个用于存放合并数据的文件
    int fd_merge = open("merge.txt", O_RDWR);
    OPEN_ERR(fd_merge);
    char buf[10240]; // 将要合并的文件的数据一一存储到数组中(缓冲区)
    int byte = 0;   //记录每次写入的字节，避免写空
    // 安全判断
    if (1 == argc)
    {
        printf("格式错误! 应输入:./a.out file1 file2 ...\n");
        return 0;
    }
    int i = 0;
    // 打开文件,根据用户输入的文件名数量,打开相应的文件
    for ( i = 1; i < argc; i++)
    {
        // 清空数组
        memset(buf, 0, sizeof(buf));
        // 打开需要合并的文件
        int fd = open(argv[i], O_RDONLY);//只读!
        OPEN_ERR(fd);
       
        // 再一一写入到fd_merge中
        while ((byte = read(fd, buf, sizeof(buf)))>0)
        {
            // 将光标移动到最后
            lseek(fd_merge, 0, SEEK_END);
            // 写入到合并文件中
            write(fd_merge,buf,byte);
        }
        //关闭文件
        close(fd);
    }
    close(fd_merge);
    return 0;
}
